﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SiGeSIB.Data.Common
{
	public class DateTimeInterval
	{
		public DateTimeInterval(DateTime? dts, DateTime? dte)
		{
			Start = dts;
			End = dte;
		}

		private DateTime? _Start;
		private DateTime? _End;

		public DateTime? Start
		{
			get
			{
				return _Start;
			}
			set
			{
				_Start = value;

				if (_Start.HasValue && _End.HasValue && _Start.Value.CompareTo(_End.Value) > 0)
					throw new ArgumentException("A data inicial não pode ser posterior à data final.", "Start");
			}
		}
		public DateTime? End
		{
			get
			{
				return _End;
			}
			set
			{
				if (_End.HasValue && _Start.HasValue && _End.Value.CompareTo(_Start.Value) < 0)
					throw new ArgumentException("A data final não pode ser anterior à data inicial.", "Start");

				_End = value;
			}
		}
		public override string ToString()
		{
			string result = "";

			if (Start.HasValue && End.HasValue)
				result += string.Concat("De ", Start.Value.ToShortDateString(), " até ", End.Value.ToShortDateString());
			else if (Start.HasValue)
				result += string.Concat("A partir de ", Start.Value.ToShortDateString());
			else if (End.HasValue)
				result += string.Concat("Até ", End.Value.ToShortDateString());
			else
				result = "Indefinido";

			return result;
		}
	}
}
